#include <stdio.h>
#include <errno.h>  //errno
#include <stdlib.h>
#include <string.h>

typedef struct Student
{
	int iId;
	char caName[32];
	float fScore;
}STU;

int main(int argc, char *argv[])
{
	FILE *file = fopen(argv[1], "w");
	if (NULL == file)
	{
		//将errno错误编号对应的错误信息返回
		printf("errno=%d, error=%s\n", errno, strerror(errno));
		exit(EXIT_FAILURE);
	}
	printf("open %s ok\n", argv[1]);

	STU stu[3];
	int i = 0;
	for (; i<3; i++)
	{
		printf("请输入学生的信息id,name,score:\n");
		scanf("%d%s%f", &stu[i].iId, stu[i].caName, &stu[i].fScore);
	}

	for (i=0; i<3; i++)
	{
		//将数据格式化输出到指定的文件中
		fprintf(file, "%d %s %.1f\n", stu[i].iId, stu[i].caName
						            , stu[i].fScore);
	}

	//关闭打开的文件
	//在操作完文件后，切记要关闭文件
	//写文件操作时，写入的数据是暂时放在缓冲区的。
	//缓冲区的数据可能还没来的及写入到磁盘空间，
	//若出现异常错误，可能会导致缓冲区的数据丢失
	//所以在操作完文件后，应及时关闭文件，
	//它会将缓冲区的数据及时的写入磁盘空间
	fclose(file);

	return 0;
}
